# -*- coding=utf-8-*-
"""
@File:memory_selection
@Author:Created by Han X.Y
@Date:on 2021/7/12 14:45 
"""

"""
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral
order.
给定⼀个包含 m x n 个元素的矩阵（m ⾏, n 列），请按照顺时针螺旋顺序，返回矩阵中的所有元素。


Input:
[
 [ 1, 2, 3 ],
 [ 4, 5, 6 ],
 [ 7, 8, 9 ]
]
Output: [1,2,3,6,9,8,7,4,5]

Input:
[
 [1, 2, 3, 4],
 [5, 6, 7, 8],
 [9,10,11,12]
]
Output: [1,2,3,4,8,12,11,10,9,5,6,7]

解题思路
给出⼀个⼆维数组，按照螺旋的⽅式输出
解法⼀：需要注意的是特殊情况，⽐如⼆维数组退化成⼀维或者⼀列或者⼀个元素。注意了这些情
况，基本就可以⼀次通过了。
解法⼆：提前算出⼀共多少个元素，⼀圈⼀圈地遍历矩阵，停⽌条件就是遍历了所有元素（count
== sum）

"""

def spiralOrder(mat):
    m=len(mat)
    if m==0:
        return mat
    n=len(mat[0])
    if n==0:
        return mat

    #top,left,right,bottom分别是剩余区域的上、下、左、右的下标
    top,left,bottom,right=0,0,m-1,n-1
    Count,Sum=0,m*n
    while Count<Sum:
        i,j=top,left




